define(["jquery", "easy-admin"], function ($, ea) {

    var laydate = layui.laydate;
    var form = layui.form;

    var init = {
        table_elem: '#currentTable',
        table_render_id: 'currentTableRenderId',
        index_url: 'knscy.tickets/index',
        add_url: 'knscy.tickets/add',
        edit_url: 'knscy.tickets/edit',
        delete_url: 'knscy.tickets/delete',
        export_url: 'knscy.tickets/export',
        modify_url: 'knscy.tickets/modify',
        dynamic_price_url:  'knscy.tickets/dynamicPrice',
        intro_url: 'knscy.tickets/infos',
    };
    // 添加或编辑门票关联文案
    var render_select_intro = function(){
        //初始化
        xmSelect.render({
            //绑定元素
            el: '#intro_xm_select',
            name: '',
            //工具栏
            toolbar: {show: true, list: ['CLEAR']},
            //开启搜索
            filterable: true,
            //分页数据设置
            paging: true,
            pageSize: 5,
            pageRemote: true,
            //开启单选
            radio: true,
            //监听选中选项动作
            on: function (data) {
                //当前选中数据
                var arr = data.arr;
                if (arr != '' && arr != undefined) {
                    //操作逻辑
                    $("#intro_xm_select_id").val(arr[0].id);
                    $("#intro_xm_select_title").val(arr[0].name);
                }

            },
            //数据处理
            remoteMethod: function (val, cb, show, pageIndex) {
                //val: 搜索框的内容, 不开启搜索默认为空, cb: 回调函数, show: 当前下拉框是否展开, pageIndex: 当前第几页
                $.ajax({
                    url: ea.url( init.intro_url ),
                    type: 'GET',
                    crossOrigin: false,
                    dataType: 'json',
                    cache: false,
                    async: false,
                    data: {
                        name: val,//搜索条件
                        page: pageIndex,//页码
                        //ks: ks//编辑时使用（结合后面selected:true表示默认选中  selected:false   表示默认不选中,就可以实现在编辑的时候，一进入页面就会有默认选中的值）
                    },

                    //接收回传参数
                    success: function (res) {
                        var data = res.data;
                        var Pages = data.last_page;
                        var res1 = data.data;
                        setTimeout(function () {
                            //需要回传一个数组
                            cb(res1, Pages)
                        }, 100)
                    },

                    error: function (data) {
                        //这里是error的处理
                        cb([], 0);
                    }
                });
            },
        });
    }

    const  Dynamic =
    {
        init: function() {
            laydate.render({
                elem: '#dynamic_range_date' //指定元素
                , range: true
            });
            laydate.render({
                elem: '#dynamic_day_date' //指定元素
                , done: function (value, date, endDate) {
                    var input = $("input[name='dynamic_days']");
                    var now = input.val();
                    if (!now.includes(value)) {
                        now += now ? "," + value : value;
                    }
                    input.val(now);
                }
            });
            //选择添加价格类型下拉
            form.on('select(price_way_select)', function(data){
                $("#way1,#way2,#way3").hide();
                $("#way"+data.value).show();
            });
            //新增价格
            $(".addDynamicPrice").click(function(){
                let ticket_id = $("input[name='ticket_id']").val();
                let type_id = $(this).parent().find("input[name='dynamic_type']").val();
                let price = $(this).parent().find("input[name='dynamic_price']").val();
                let range = $("#dynamic_range_date").val();
                let week =[];
                let days = $("input[name='dynamic_days']").val();
                $("input[name='week']:checked").each(function(){
                    week.push($(this).val());
                });
                let items = ['', range, week.join(","), days]
                let content = items[ type_id ];

                ea.request.ajax('post', {
                    url: ea.url(init.dynamic_price_url),
                    data: {
                        type_id, price,ticket_id, content
                    },
                }, function (res) {
                    Dynamic.renderResult(res);
                }, function (res) {

                });
            })
        },
        //价格的操作
        priceDelete: function ( obj ){
            let data = $(obj).parents("tr").data();
            data.is_delete = 1;
            ea.request.ajax('post', {
                url: ea.url(init.dynamic_price_url),
                data:  data,
            }, function (res) {
                Dynamic.renderResult(res);
            }, function (res) {

            });
        },
        changeSort :function (obj){
            let data = $(obj).parents("tr").data();
            data.is_sort = 1;
            data.sort = $(obj).val();
            ea.request.ajax('post', {
                url: ea.url(init.dynamic_price_url),
                data:  data,
            }, function (res) {
                Dynamic.renderResult(res);
            }, function (res) {

            });
        },
        renderResult : function (res){
            $("#price_table tbody").html( res.data.html)
            $(".delete-price").click( function (){ Dynamic.priceDelete ( this )})
            $("input[name='price_sort']").change(function (){ Dynamic.changeSort ( this )})
            Dynamic.showCanler(res.data.price)
        },

        //价格显示日历
        showCanler : function ( mark ){
            $('#show_day_price').html("");
            laydate.render({
                elem:"#show_day_price"
                ,position: 'static'
                ,mark: mark
            })
        }
    }

    var remark_json_arr = [];
    const XmIntro =
    {
        //渲染文案列表
        render_intro_table:  function  ( data )
        {
            //排序数组
            remark_json_arr.sort(function(a,b){
                return a.sort - b.sort;
            })
            $("#intro_remark").val( JSON.stringify(data));
            if( Array.isArray(data) ) {
                let html = '';
                data.forEach(function(item,index) {
                    html += `<tr data-index="${index}">
                                <td><input type="text" style="width: 90px"  class="layui-input intro_sort"  value="${item['sort']}"/></td>
                                <td>${item['title']}</td>
                                <td>${item['name']}</td>
                                <td><a  class="delete-intro layui-btn layui-btn-primkey layui-btn-sm">删除</a></td>
                                </tr>`;
                })
                $('#intro_table tbody').html(html);
                //排序
                $('#intro_table .intro_sort').change( function(){
                    let index = $(this).parents('tr').data('index');
                    remark_json_arr[ index]['sort'] =  $(this).val();
                    XmIntro.render_intro_table(remark_json_arr);
                })
                //删除
                $("#intro_table .delete-intro").click( function(){
                    let index = $(this).parents('tr').data('index');
                    console.log(index)
                    remark_json_arr.splice(index,1);
                    XmIntro.render_intro_table(remark_json_arr);
                })
            }
        },
        init: function(){

            remark_json_arr =  $("#intro_remark").val() ?  JSON.parse( $("#intro_remark").val()) : [];
            XmIntro.render_intro_table(remark_json_arr);
            //增加文案处理
            $(".addIntroBtn").click( function(){
                let id = $("#intro_xm_select_id").val();
                let name  = $('#intro_xm_select_title').val();
                let title = $("#intro_title").val();
                if(!id || !name){
                    ea.msg.error('请选择关联文案');
                    return false;
                }
                if(!title){
                    ea.msg.error('请输入标题');
                    return false;
                }
                //清空记录
                $("#intro_xm_select_id,#intro_xm_select_title, #intro_title").val('');
                //加入数组
                remark_json_arr.push({
                    'id': id, 'name': name, 'title': title, 'sort': 0
                });
                //渲染到列表
                XmIntro.render_intro_table(remark_json_arr);
            })

        }
    }

    var Controller = {

        index: function () {
            ea.table.render({
                init: init,
                cols: [[
                    {type: 'checkbox'},
                    {field: 'id', title: 'ID'},
                    {field: 'sort', title: '排序',search:false,minWidth:100, edit: 'text'},
                    {field: 'title', title: '标题名称',minWidth:200},
                    {field: 'sub_title', title: '副标题',minWidth:200},
                    {field: 'price', title: '价格',minWidth:100},
                    {field: 'orgin_price', title: '原价格',search:false,minWidth:100},
                    {field: 'sale_count', title: '销量',search:false,minWidth:100},
                    {field: 'virtual_sale_count',search:false, title: '虚拟销量',minWidth:100},
                    {field: 'stock', title: '库存',search:false,minWidth:100},
                    {field: 'status', search: 'select',minWidth:100, selectList: ["禁用","启用"], title: '状态', templet: ea.table.switch},
                    {field: 'remark', title: '备注说明',minWidth:100, templet: ea.table.text},
                    {field: 'create_time',minWidth:150, search:'range', title: '创建时间'},
                    {fixed:"right",width: 150, title: '操作', templet: ea.table.tool},
                ]],
            });

            ea.listen();
        },
        add: function () {
            //动态价格设置
            Dynamic.init();
            //关联文案的选择xmselect
            render_select_intro();
            XmIntro.init();
            //处理提交表单后返回，重置表单数据

            ea.listen(function (data) {
                    return data;
                }, function (res) {
                    ea.msg.success(res.msg, function () {
                        $("#app-form")[0].reset();
                        $("#price_table tbody").html( "")
                        $('#show_day_price').html("");
                        $('#intro_table tbody').html("");
                    })
            })
        },
        edit: function () {
            //动态价格设置
            Dynamic.init();
            //关联文案的选择xmselect
            render_select_intro();
            //编辑加载价格列表
            XmIntro.init();
            ea.request.ajax('post', {
                url: ea.url(init.dynamic_price_url),
                data: {
                    is_edit:1, ticket_id : $("input[name='ticket_id']").val()
                },
            }, function (res) {
                Dynamic.renderResult(res);
            }, function (res) {

            });
            ea.listen();
        },
    };
    return Controller;
});